
    // 声明一个叫做ajax的方法

    /* let ajaxP = (options = {}) => new Promise((resolve , reject) => {

    }) */

    function ajax(options = {}) {
        return new Promise((resolve, reject) => {
            
    // 声明一个叫做ajax的方法
        let obj =  {
            url:"",//请求的地址
            method:"get",//设计的请求方式
            data:{},//未来要传递的参数
            success(res) { //成功的回调

            },
            error(err) { //失败的回调

            }
        }
        // 对obj进行混写 这样的好处就是在调用的时候不用传入所有的参数
        for(let k in options) {
            obj[k] =  options[k]
        }
    

    let { url, method, data, success, error } = obj

    // 对method统一转换成小写
    method = method.toLowerCase()


    let xhr = null;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest()
    } else {
        xhr = new ActiveXObject("microsoft.XMLHTTP")
    }

    // 声明一个get请求的参数变量
    //data: {
    //    name: "蕾蕾",
    //        age: 30,
    //    }
    // 变成 ?name=李磊&age =30
      
    let params = ""
    if(method === "get") {
        for(let k in data) {
           params += k + "=" + data[k] + "&"
        }
    }
    params = "?" + params.substring(0,params.length-1)

    // console.log(params);
    // 1.请求方式 2.请求地址 3.是否异步
    xhr.open (method,url + params)

    // 设置请求头
    /* xhr.setRequestHeader("content-type","application/json") */

    // 判断是get还poth请求
    if(method) { //如果是get请求 那么就要send null
        xhr.send(null)
    } else {
        //post 请求要传递参数
        xhr.send(JSON.stringify(data))
    }

    xhr.onreadystatechange = function () {
        if(xhr.readyState === 4 && xhr.status === 200) {
            /* console.log(JSON.parse(xhr.responseText)); */
            resolve(JSON.parse(xhr.responseText))
        }
    }


    xhr.onerror = function(err) {
        // console.log(err);
        // 回调用户err的参数
       /*  error(err) */
       reject(err)
    }

        })
    }

    